Branch Status for Out-Of-Service Cases#391
Conversation
|
|
||
| /// Open branch contributes nothing: residual values AND every tracked | ||
| /// derivative coefficient must be zero. Verifies the `closed` parse | ||
| /// path, the residual mask, and mask propagation through AD in one shot. |
There was a problem hiding this comment.
I suggest adding a test for the Enzyme Jacobian as well, since that is the one that will be used in simulations.
pelesh
left a comment
There was a problem hiding this comment.
There are a few things that need to be addressed before this PR could be merged:
- Documentation: Mathematical model of the governing equations and derivatives need to be defined for the case when the line is out of service. Must ensure that the system is not singular when the line is out of service.
- Complete set of unit tests needs to be implemented including Jacobian tests per @nkoukpaizan comment.
- Parameter
closedshould be boolean. There should be "derived" parameter private to the branch model to set the factor multiplying injection currents. This should prevent bugs when the input is incorrect (e.g. 1.1 instead of 1.0 as the current solution requires).
|
moving to draft and will bring back once #417 is merged to prevent confusion |
0643a18 to
f10409c
Compare
07398b5 to
d13f24c
Compare
d13f24c to
4075d52
Compare
4075d52 to
81dcb76
Compare
|
I have thought about this PR for a while now. I think there are too many details left up in the air about how GridKit should respond when part of the system is islanded. We will need to address this soon once we do more advanced things other than |
Description
Adds a
closedparameter to theBranchmodel, allowing case files to faithfully import out-of-service transmission lines. Implemented as aRealTmask multiplier on residual contributions, following thed65bd4fIEEEST mask precedent (branch-free residuals for AD).Closes #370.
Proposed changes
BranchParameters::closed(bool, defaulttrue) new optional param in theBranchdevice'sparamsblock.RealT closed_{1.0}member onBranchmultiplied into all fourevaluateBusResidualNNoutputs. Whenclosed = false, residual contributions and Jacobian entries are zero, with no change to AD behavior. This approach, therefore, includes out-of-service branches in the sparsity structure. Long term, this should be optimized, but is out of scope here.Checklist
-Wall -Wpedantic -Wconversion -Wextra.Further comments
A few of the larger cases have branches that I must omit when translating to
GridKitbecause we don't have a way to declare branch status. This is a part of a greater effort of mine to have as little friction in case translation as possible, so we can have full parity with PowerWorld cases.